package com.study.mirrorforest.main.common.mapper.orders;//package com.sunlake.spring.main.common.mapper.orders;
//
//import com.sunlake.spring.main.model.orders.dto.OrdersQueryDTO;
//import com.sunlake.spring.main.model.orders.po.OrderItemsPO;
//import org.mapstruct.Mapper;
//import org.mapstruct.Mapping;
//import org.mapstruct.Named;
//import org.mapstruct.factory.Mappers;
//
//import java.math.BigDecimal;
//import java.time.LocalDateTime;
//
///**
// * 订单相关对象的MapStruct映射器
// * @author liuhanzhi49
// */
//@Mapper(componentModel = "spring", imports = {LocalDateTime.class, BigDecimal.class}) // 支持Spring注入和导入工具类
//public interface OrderMapStruct {
//
//    /**
//     * 将OrdersQueryDTO映射到OrderItemsPO
//     * 由于两个类的字段不完全对应，需要自定义映射关系
//     */
//    @Mapping(source = "type", target = "itemType") // 将查询DTO的type映射到PO的itemType
//    @Mapping(target = "quantity", constant = "1") // 数量默认为1
//    @Mapping(target = "createdAt", expression = "java(LocalDateTime.now())") // 创建时间设为当前时间
//    @Mapping(target = "subtotalAmount", source = "unitPrice", qualifiedByName = "calculateSubtotal") // 计算小计金额
//    OrderItemsPO toOrderItemsPO(OrdersQueryDTO ordersQueryDTO);
//
//    /**
//     * 自定义方法：计算小计金额
//     * 注意：这个方法在实际使用时需要根据业务逻辑调整
//     */
//    @Named("calculateSubtotal")
//    default BigDecimal calculateSubtotal(BigDecimal unitPrice) {
//        if (unitPrice == null) {
//            return BigDecimal.ZERO;
//        }
//        return unitPrice.multiply(BigDecimal.ONE); // 简单示例：单价*数量(1)
//    }
//
//    /**
//     * 批量映射方法：将OrdersQueryDTO列表映射到OrderItemsPO列表
//     * MapStruct会自动生成循环调用单个映射方法的代码
//     */
//    java.util.List<OrderItemsPO> toOrderItemsPOList(java.util.List<OrdersQueryDTO> queryDTOList);
//}
